import functools
import time

from loguru import logger


def cal_timer(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start_time = time.time()  # 记录函数开始执行的时间
        result = func(*args, **kwargs)  # 执行函数
        end_time = time.time()  # 记录函数结束执行的时间
        elapsed_time = end_time - start_time  # 计算耗时
        logger.debug(f"{func.__name__} executed in {elapsed_time:.3f} seconds")  # 打印耗时
        return result  # 返回函数的执行结果

    return wrapper